revealer: Use floor(), not ceil()
authorBenjamin Otte <otte@redhat.com>
Wed, 9 Sep 2020 13:56:10 +0000 (15:56 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 9 Sep 2020 15:38:37 +0000 (17:38 +0200)
We use ceil() in measure(), so using it again will increase the
child's size whenever there is even a tiny rounding error.

This should also not make the size too small, because:
min = ceil(child_min * scale)
min / scale >= child_min
floor (min / scale) >= floor (child_min) = child_min
The last equality is because child_min is an integer.

Fixes #3137

gtk/gtkrevealer.c

index b921ef6e442bf7ac53e34a703e605613905e1aad..c6ac90c9cee2597b8e39b9e66fd040aa76fe42c7 100644 (file)
@@ -491,13 +491,13 @@ gtk_revealer_size_allocate (GtkWidget *widget,
   if (hscale < 1.0)
     {
       g_assert (vscale == 1.0);
-      child_width = MIN (100*width, ceil (width / hscale));
+      child_width = MIN (100 * width, floor (width / hscale));
       child_height = height;
     }
   else if (vscale < 1.0)
     {
       child_width = width;
-      child_height = MIN (100*height, ceil (height / vscale));
+      child_height = MIN (100 * height, floor (height / vscale));
     }
   else
     {